
class CleanWebpackPlugin{
  constructor(){}
  apply(compiler){
    // 2，获取打包输出的目录
    const outputPath = compiler.options.output.path;
    console.log(outputPath);
    const fs = compiler.outputFileSystem;
    debugger;
    console.log(compiler);
    // 1. 注册钩子，在打包输出之前 emit
    compiler.hooks.emit.tap("CleanWebpackPlugin",(compilation)=>{
      debugger;
      // console.log(compilation);
    })
    // 3. 通过fs删除打包输出的目录下的所有文件
    this.removeFile(fs,outputPath )
  }
  removeFile(fs,filePath) {
    // 想要删除打包输出的目录下所有资源，需要先将目录下的资源删除，才能删除这个目录
    // 1. 读取当前目录下所有资源
    const files = fs.readdirSync(filePath);
    // console.log(files); // ['js','static','index.html']
    // 2. 遍历一一删除
    files.forEach(file => {
      // 2.1 遍历所有文件，判断是文件夹还是文件
      const path = `${filePath}/${file}`;
      const fileStat = fs.statSync(path);
      if(fileStat.isDirectory()){
        // 2.2 是文件夹，就得删除下面所有文件，才能删除文件夹
        this.removeFile(fs,path)
      }else {
        // 2.3 是文件，直接删除
        fs.unlinkSync(path);
      }
    });
    //
  }
}
module.exports = CleanWebpackPlugin